"""8.9 类的封装
一、封装的定义
    封装是指将对象的属性和方法封装在一个类中，只对外提供公共的接口，隐藏内部的实现细节。
二、访问控制
    在Python中，访问控制是通过属性和方法的命名来实现的。
    1）公有属性和方法：
        公有属性和方法是指在类中定义的属性和方法，默认情况下是公有的。
        公有属性和方法是指在类中定义的属性和方法，默认情况下是公有的。

"""
class PersonInfo:
    def __init__(self,_protect_attr,__private_attr):
        #Pyton 变量前面有一个下划线的变量是保护变量，只能在类内部和子类内部访问。
        self._protect_attr=_protect_attr
        #Python 变量前面有两个下划线的变量是私有变量，只能在类内部访问。
        self.__private_attr=__private_attr
    def get_private_attr(self):
        return self.__private_attr
person=PersonInfo("保护的对象属性","私有的对象属性")
#访问控制演示
print("访问保护属性protect：",person._protect_attr)
#print("访问私有属性private：",person.PersonInfo__private_attr) #访问私有属性的方式，报错
value=person.get_private_attr()
print("访问私有属性private：",value)